package com.gateway.pay.channel.strategy.factory;

import com.gateway.pay.channel.strategy.IThirdPartyStrategy;

/**
 * 为了避免策略模式必须要将具体的策略暴露给高层模块的缺点，
 * 使用工厂模式来生成策略，这样高层模块只需要一个约束条件，
 * 就可以获得需要的策略。
 *
 * 策略生成抽象工厂
 */
public interface IThirdPartyFactory {

    /**
     * 生成策略的接口，
     * 其参数还可以使用一个配置文件来实现约束条件，
     * 这里使用枚举
     *
     * @param strategyEnum
     * @return
     */
    IThirdPartyStrategy createStrategy(Object strategyEnum);
}
